[bits 32]

magic   equ 0xe85250d6
i386    equ 0
length  equ header_end - header_start

section .multiboot2
header_start:
    dd magic  ; 魔数
    dd i386   ; 32位保护模式
    dd length ; 头部长度
    dd -(magic + i386 + length); 校验和

    ; 结束标记
    dw 0    ; type
    dw 0    ; flags
    dd 8    ; size
header_end:

extern bl_init
extern kernel_main

section .text
global _start
_start:
    push ecx
    push eax

    call bl_init
    call kernel_main

    xchg bx, bx

halt:
    sti
    hlt

    jmp halt